{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "414c07ec-e16c-4f19-b75b-4781f41329a3",
   "metadata": {},
   "source": [
    "Chapter 12\n",
    "# 用NumPy数组 (邻接矩阵) 创建图，有权\n",
    "Book_6《数据有道》 | 鸢尾花书：从加减乘除到机器学习"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "dd09afe8-e59d-43c4-b265-8f6e464206ae",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import networkx as nx\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "9a56397b-df15-4094-94a3-752768d99450",
   "metadata": {},
   "outputs": [],
   "source": [
    "matrix_G = np.array([[0, 1, 5, 0], \n",
    "                     [1, 0, 4, 2], \n",
    "                     [5, 4, 0, 3], \n",
    "                     [0, 2, 3, 0]])\n",
    "# 定义无向图邻接矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "64fb108f-c827-427e-a805-a5ce50973960",
   "metadata": {},
   "outputs": [],
   "source": [
    "G = nx.from_numpy_array(matrix_G, \n",
    "                        create_using=nx.Graph)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "f4021bff-fcb4-4b60-bc60-aa87b349c76f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "NodeView((0, 1, 2, 3))"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "G.nodes()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "d1acd75a-460a-429b-9538-464cd2ee3d77",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "EdgeView([(0, 1), (0, 2), (1, 2), (1, 3), (2, 3)])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "G.edges()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "622151a3-ae13-4bf7-b542-59357447cf9a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 修改节点标签\n",
    "mapping = {0: \"a\", 1: \"b\", 2: \"c\", 3: \"d\"}\n",
    "G = nx.relabel_nodes(G, mapping)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "1f64c726-f0bc-41cf-ba84-fac20c31f59a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "NodeView(('a', 'b', 'c', 'd'))"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "G.nodes()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "cdd26c54-4d4f-433a-8f4d-c6131c9962bf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "EdgeView([('a', 'b'), ('a', 'c'), ('b', 'c'), ('b', 'd'), ('c', 'd')])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "G.edges()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "949f3bbf-2771-4529-8a10-120b2bd746a5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{('a', 'b'): 1, ('a', 'c'): 5, ('b', 'c'): 4, ('b', 'd'): 2, ('c', 'd'): 3}"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "G_edge_labels = nx.get_edge_attributes(G, \"weight\")\n",
    "G_edge_labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "92e09464-b47c-4b27-9c1f-2f7934956bff",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 600x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 可视化\n",
    "plt.figure(figsize = (6,6))\n",
    "pos = nx.spring_layout(G, seed = 28)\n",
    "nx.draw_networkx(G, \n",
    "                 pos = pos,\n",
    "                 node_color = '#0058FF',\n",
    "                 with_labels = True,\n",
    "                 node_size = 188)\n",
    "nx.draw_networkx_edge_labels(G, pos, \n",
    "                             G_edge_labels)\n",
    "plt.savefig('无向图.svg')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "d364b180-65de-4b00-bd3d-35afc9e3f4c7",
   "metadata": {},
   "outputs": [],
   "source": [
    "matrix_Di_G = np.array([[0, 0, 5, 0],\n",
    "                        [1, 0, 0, 2],\n",
    "                        [0, 4, 0, 0],\n",
    "                        [0, 0, 3, 0]])\n",
    "# 定义有向图邻接矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "cf8e56b2-05ae-48ea-ab1f-9b3c318bfd88",
   "metadata": {},
   "outputs": [],
   "source": [
    "Di_G = nx.from_numpy_array(matrix_Di_G, \n",
    "                        create_using=nx.DiGraph)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "3b3a7805-0059-447f-8fdd-cd1648f3524b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 修改节点标签\n",
    "Di_G = nx.relabel_nodes(Di_G, mapping)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "c1d7fa46-d590-4897-816e-3a212ca95297",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 600x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 可视化\n",
    "plt.figure(figsize = (6,6))\n",
    "nx.draw_networkx(Di_G, \n",
    "                 pos = pos,\n",
    "                 node_color = '#0058FF',\n",
    "                 with_labels = True,\n",
    "                 node_size = 188)\n",
    "nx.draw_networkx_edge_labels(G, pos, \n",
    "                             G_edge_labels)\n",
    "plt.savefig('有向图.svg')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "70be59cf-29c2-452b-a7d1-72a947ce2ef0",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e3ff656d-b6fb-4be8-818a-5e1076260af4",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
